﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Tipler.Siniflar;
using Tipler.DataSetler;
using DataServis;
using System.Data;
using Tipler.Enumlar;

namespace IsKurallari.Tanimlama
{
    public class TanimlamaIsKurali : TemelIsKurali
    {

        public FonksiyonSonuc<IlPrmDataSet> IlPrmGetir()
        {
            FonksiyonSonuc<IlPrmDataSet> sonuc = new FonksiyonSonuc<IlPrmDataSet>();
            IlPrmDataSet ds = new IlPrmDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.VeriGetir(ds, "SELECT * FROM IlPrm");
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlPrm okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }
        public FonksiyonSonuc<Boolean> IlPrmKaydet(IlPrmDataSet dsIlPrm)
        {
            FonksiyonSonuc<Boolean> sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsIlPrm);
                sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                sonuc.Sonuc = false;
                sonuc.Ex = ex;
                sonuc.Hata = "IlPrm kaydedilemedi.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlcePrmDataSet> IlcePrmGetir()
        {
            FonksiyonSonuc<IlcePrmDataSet> sonuc = new FonksiyonSonuc<IlcePrmDataSet>();
            IlcePrmDataSet ds = new IlcePrmDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT Ilce.*,IlAdi+' '+IlceAdi as IlIlceAdi ");
                sbSQL.Append(" FROM IlcePrm Ilce ");
                sbSQL.Append("      INNER JOIN IlPrm Il ON Ilce.IlID=Il.IlID ");
                sbSQL.Append(" where Ilce.Silindi=0 ");
                sbSQL.Append(" ORDER BY IlAdi,IlceAdi ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlcePrm okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }
        public FonksiyonSonuc<IlcePrmDataSet> IlcePrmGetirbyIlID(int IlID)
        {
            FonksiyonSonuc<IlcePrmDataSet> sonuc = new FonksiyonSonuc<IlcePrmDataSet>();
            IlcePrmDataSet ds = new IlcePrmDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("IlID", DbType.Int32, IlID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM IlcePrm where IlID=@IlID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlcePrm okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }
        public FonksiyonSonuc<bool> IlcePrmKaydet(IlcePrmDataSet dsIlcePrm)
        {
            FonksiyonSonuc<Boolean> sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsIlcePrm);
                sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                sonuc.Sonuc = false;
                sonuc.Ex = ex;
                sonuc.Hata = "IlcePrm kaydedilemedi.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> IlKatsayiKaydet(IlKatsayiDataSet dsIlKatsayi)
        {
            FonksiyonSonuc<Boolean> sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsIlKatsayi);
                sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                sonuc.Sonuc = false;
                sonuc.Ex = ex;
                sonuc.Hata = "IlKatsayi kaydedilemedi.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlKatsayiDataSet> IlKatsayiGetir()
        {
            FonksiyonSonuc<IlKatsayiDataSet> sonuc = new FonksiyonSonuc<IlKatsayiDataSet>();
            IlKatsayiDataSet ds = new IlKatsayiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM IlKatsayi WHERE 1=1 ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlKatsayi tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }


        public FonksiyonSonuc<SozlesmeDonemDataSet> SozlesmeDonemKaydet(SozlesmeDonemDataSet dsSozlesmeDonem)
        {
            FonksiyonSonuc<SozlesmeDonemDataSet> Sonuc = new FonksiyonSonuc<SozlesmeDonemDataSet>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                if (dsSozlesmeDonem != null)
                    oVeriKatmani.TopluVeriIslemeIDDondur(dsSozlesmeDonem);

                oVeriKatmani.TopluVeriIsleme(dsSozlesmeDonem);
                Sonuc.Sonuc = dsSozlesmeDonem;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = null;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsSozlesmeDonem.SozlesmeDonem.TableName + " kaydedilemedi.";
                if (ex.Message.Contains("Violation of PRIMARY KEY constraint"))
                    Sonuc.HataKod = "1";
                else
                    Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<SozlesmeDonemDataSet> SozlesmeDonemGetir()
        {
            FonksiyonSonuc<SozlesmeDonemDataSet> sonuc = new FonksiyonSonuc<SozlesmeDonemDataSet>();
            SozlesmeDonemDataSet ds = new SozlesmeDonemDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM SozlesmeDonem WHERE 1=1 ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "SozlesmeDonem tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }




        public FonksiyonSonuc<bool> DuyuruKaydet(DuyuruDataSet dsDuyuru)
        {
            FonksiyonSonuc<Boolean> sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsDuyuru);
                sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                sonuc.Sonuc = false;
                sonuc.Ex = ex;
                sonuc.Hata = "Duyuru kaydedilemedi.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<DuyuruDataSet> DuyuruGetir()
        {
            FonksiyonSonuc<DuyuruDataSet> sonuc = new FonksiyonSonuc<DuyuruDataSet>();
            DuyuruDataSet ds = new DuyuruDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM Duyuru ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Duyuru tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<DuyuruDataSet> AktifDuyuruGetir()
        {
            FonksiyonSonuc<DuyuruDataSet> Sonuc = new FonksiyonSonuc<DuyuruDataSet>();
            DuyuruDataSet SonucDataSet = new DuyuruDataSet();
            VeriArabirim oVeriKatmani = null;
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("ISDELETED", DbType.Int32, KayitDurumu.Kayitli.GetHashCode()));
                pParams.Add(oVeriKatmani.CreateParameter("BAS_TAR", DbType.DateTime, DateTime.Now.Date));
                pParams.Add(oVeriKatmani.CreateParameter("BIT_TAR", DbType.DateTime, DateTime.Now.Date));


                sb.Append(@"SELECT * FROM Duyuru ");
                sb.Append(" WHERE IsDeleted = " + PrmSgn + "ISDELETED");
                sb.Append(" AND Bas_Tar <= " + PrmSgn + "BAS_TAR");
                sb.Append(" AND Bit_Tar >= " + PrmSgn + "BIT_TAR");
                sb.Append(" ORDER BY Bas_Tar desc");

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString(), pParams);
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Duyuru.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;

        }

        public FonksiyonSonuc<bool> MusteriKaydet(MusteriDataSet dsMusteri)
        {
            FonksiyonSonuc<Boolean> sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsMusteri);
                sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                sonuc.Sonuc = false;
                sonuc.Ex = ex;
                sonuc.Hata = "Musteri kaydedilemedi.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<MusteriDataSet> MusteriGetir(int MusteriTipi, string Adi, string Soyadi, string TCKimlikNo, string VergiNo)
        {
            FonksiyonSonuc<MusteriDataSet> sonuc = new FonksiyonSonuc<MusteriDataSet>();
            MusteriDataSet ds = new MusteriDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM Musteri WHERE 1=1 ");
                if (MusteriTipi > 0)
                {
                    sbSQL.Append(" AND MusteriTipi=" + PrmSgn + "MusteriTipi ");
                    pParams.Add(oVeriKatmani.CreateParameter("MusteriTipi", DbType.Int32, MusteriTipi));
                }
                if (Adi != "")
                {
                    sbSQL.Append(" AND Adi like " + PrmSgn + "Adi ");
                    pParams.Add(oVeriKatmani.CreateParameter("Adi", DbType.String, "%" + Adi + "%"));
                }
                if (Soyadi != "")
                {
                    sbSQL.Append(" AND Soyadi like " + PrmSgn + "Soyadi ");
                    pParams.Add(oVeriKatmani.CreateParameter("Soyadi", DbType.String, "%" + Soyadi + "%"));
                }
                if (TCKimlikNo != "")
                {
                    sbSQL.Append(" AND TCKimlikNo like " + PrmSgn + "TCKimlikNo ");
                    pParams.Add(oVeriKatmani.CreateParameter("TCKimlikNo", DbType.String, "%" + TCKimlikNo + "%"));
                }
                if (VergiNo != "")
                {
                    sbSQL.Append(" AND VergiNo like " + PrmSgn + "VergiNo ");
                    pParams.Add(oVeriKatmani.CreateParameter("VergiNo", DbType.String, "%" + VergiNo + "%"));
                }

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Musteri tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

    }
}
